package cn.ipanel.bigdata

import cn.ipanel.bigdata.job.TObj

/**
 * Author: lzz
 * Date: 2021/11/26 14:01
 */
object Main {

  val yyyyMMdd: String = "20211228"

  def main(args: Array[String]): Unit = {
    import scala.reflect.runtime.{universe => ru}
    //获取运行时类镜像
    val classMirror = ru.runtimeMirror(getClass.getClassLoader)
    //获取需要反射object
    val classTest = classMirror.staticModule("cn.ipanel.bigdata.job.TObj")
    //构造获取方式的对象
    val methods = classMirror.reflectModule(classTest)
    //反射结果赋予对象
    val objMirror = classMirror.reflect(methods.instance)

    println(objMirror)
    println(objMirror.instance)
    println(TObj)

    val obj: TObj.type = objMirror.instance.asInstanceOf[TObj.type]
    println(obj)
    obj.show

    // TODO 已经没有 ru.TermName 这个方法了 20220708
//    //反射调用函数
//    val method = methods.symbol.typeSignature.member(ru.TermName(s"show")).asMethod
//    //最后带参数,执行这个反射调用的函数
//    val result = objMirror.reflectMethod(method)()
////    result.asInstanceOf[String]
  }
}